<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>原型模式</title>
		<script type="text/javascript" src="../jquery.min.js"></script>
	</head>
	<body>
		<h2>JavaScript中的原型继承</h2>
		❏ 所有的数据都是对象。<br>
		❏ 要得到一个对象，不是通过实例化类，而是找到一个对象作为原型并克隆它。<br>
		❏ 对象会记住它的原型。<br>
		❏ 如果对象无法响应某个请求，它会把这个请求委托给它自己的原型。<br>
		<p>* 通过Object.create( null )可以创建出没有原型的对象。
		<script type="text/javascript">
			//构造行数
			var Plane = function(){
				this.blood = 100;
				this.attackLevel = 1;
				this.defenseLevel = 1;
				console.log('构造行数 this: ',this)
			};
			Plane.prototype.status = 200
			//克隆对象，提供便捷去创建某个类型的对象
			var plane = new Plane();
			plane.blood = 500;
			plane.attackLevel = 10;
			plane.defenseLevel = 7;
			// 克隆数据输出
			console.log('plane克隆',plane)
			//继承对象，提供便捷去创建某个类型的对象
			var clonePlane = Object.create( plane );
			console.log('clonePlane 继承 ', clonePlane );  // 输出：Object {blood: 500, attackLevel: 10, defenseLevel: 7}
			//在不支持Object.create 方法的浏览器中，则可以使用以下代码：
			Object.create = Object.create || function( obj ){
				var F = function(){};
				F.prototype = obj;
				console.log(F)
				return new F();
			}
		</script>
	</body>
</html>
